10/10/96 Hexadec's clone finder's for mIRC 4.6+ I have included 2 diffrent clone finders, one is fast and one is slow =) The fast one requires the use of the IAL (Internal address list) the other uses a /who #channel. In order to use the fast clone scanner the box in Tools | remotes which says "Internal Address List" must be checked. Also the IAL must be fully updated, this can be done by typing /who #channel. I find the best way to do this is add the following line to remote | events. 1:on join:#:if ($nick = $me) { .enable #clone_check | who $chan } This will fully update the IAL whenever you join a channel (it will also scan for clones. It is a good idea to change # to #Channel_Which_You_Op_In eg. #lamers) the /who #channel only only needs to be performed once, after that mIRC will take care of all the updating. Boy I'm long winded ;) Channel Popups: ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ Clone Scan W/Who:who $chan | .enable #clone_scan Fast Clone Scan: { :n inc %i if ($nick(%i,$chan) != $null) { if ($address($nick(%i,$chan),0) = $null) { echo 4 $chan Your IAL isnt fully updated. Please read the text file accompanying this script. | goto x } %y = $readini scan.ini x $address($nick(%i,$chan),3) if (%y != $null) { if ($address($nick(%i,$chan),3) !isin %s) { %s = %s $address($nick(%i,$chan),3) } } writeini scan.ini x $address($nick(%i,$chan),3) . $+ $nick(%i,$chan) $readini scan.ini x $address($nick(%i,$chan),3) goto n } else { if ($null == %s) { echo 4 $chan There are no clones in $chan } :x inc %z if ($token(%z,32,%s) != $null) { echo 4 $chan There are $count( [ $readini [ scan.ini x $token(%z,32,%s) ] ] ,.) clients from $token(%z,32,%s) echo 4 $chan $remove( [ $readini [ scan.ini x $token(%z,32,%s) ] ] ,.) goto x } } :z unset %i %z %s %y remini scan.ini x } Raw: ŻŻŻŻ #clone_scan disabled 352:* { %y = $readini scan.ini x $parm4 if (%y != $null) { if ($parm4 !isin %s) { %s = %s $parm4 } } writeini scan.ini x $parm4 . $+ $parm6 $readini scan.ini x $parm4 halt } 315:* { if (%s == $null) { echo 4 -a There are no clones } :x inc %z if ($token(%z,32,%s) != $null) { echo 4 -a There are $count( [ $readini [ scan.ini x $token(%z,32,%s) ] ] ,.) clients from *!*@ $+ $token(%z,32,%s) echo 4 -a $remove( [ $readini [ scan.ini x $token(%z,32,%s) ] ] ,.) goto x } unset %i %z %s %y remini scan.ini x .disable #clone_scan halt } #clone_scan end Note: If you're wondering why I used writeini/$readini instead of variables it is because using ini's works about two times faster than using variables! With my 486/25mhz with 4 megs of ram it takes me about 15 seconds to scan a channel with 200 clients using variables. But using write/readini it only takes 6 (I'm talking about the IAL scanner here, not the /who #channel scanner). This is with the *EXACT* same routine. Of course with a faster computer it would be *alot* quicker. =) Using ini's is faster because mIRC uses windows ini routine which is faster than the one it uses for variables. You can thank bfriendly for telling me using ini's is faster and Khaled for telling me why =)